// cf-69d
// 题意：给定一个坐标(x, y)(-200<=x, y<=200)，现在两个人轮流操作，每次
//       操作可以选择从n(<=20)个给定的向量(0<=xi, yi<=200)选择一个加到
//       当前(x, y)上，或者选择将当前点以y=x做对称。当某人的(x, y)离
//       原点的欧几里得距离大于d(<=200)时算输。问谁胜。
//
// 题解：首先可以分析，对称操作没有卵用。然后就是经典利用sg定理就行，
//       记忆化一下。
//
// run: $exec < input
#include <iostream>
#include <vector>
#include <utility>
#include <set>

int const maxn = 407;
int sg[maxn][maxn];
int n, x, y, d;
std::vector<std::pair<int, int>> v;

bool movable(int x, int y)
{
	return (x * x + y * y <= d * d);
}

int min_not_in_mex(std::set<int> const & s)
{
	int t = 0;
	for (auto i : s)
		if (i == t) t++;
		else return t;
	return t;
}

int calc_sg(int x, int y)
{
	if (sg[x + 200][y + 200] != -1) return sg[x + 200][y + 200];
	std::set<int> mex;
	for (int i = 0; i < n; i++) {
		int tx = x + v[i].first, ty = y + v[i].second;
		if (movable(tx, ty)) mex.insert(calc_sg(tx, ty));
	}
	return sg[x + 200][y + 200] = min_not_in_mex(mex);
}

int main()
{
	std::ios::sync_with_stdio(false);
	std::cin >> x >> y >> n >> d;
	v.resize(n);
	for (int i = 0; i < n; i++) std::cin >> v[i].first >> v[i].second;
	for (int i = 0; i < maxn; i++)
		for (int j = 0; j < maxn; j++) sg[i][j] = -1;
	if (calc_sg(x, y)) std::cout << "Anton\n";
	else std::cout << "Dasha\n";
}

